The origin of the modern keyboard as the primary method for inputting text from a human to a machine dates back to early typewriters in the 19th century. As computers were developed, it was a natural evolution to adapt the typewriter keyboard to use as the primary method for inputting text. For a skilled typist, it has remained the fastest way possible to input text into the computer.
With ongoing efforts to make computers smaller and more portable, the physical keyboard has become one of the most significant limiting factors in just how small a device can become: the physical size of the human finger is not something computer designers could change. As a result, computers for certain portable applications have been designed without a physical keyboard, and use touch-screen based input methods as the primary form of human-computer interface. (This is also the case for some applications where people are physically unable to use a keyboard, such as persons with physical disabilities.)
Input methods that are designed for portable touch-screen based devices may have two primary requirements that frequently conflict with each other. The method of input should be as fast as possible and at the same time the method of input should take as little of the display screen as possible. Unfortunately, as the space taken up for input on the display screen is decreased, it can become difficult to increase speed without adversely affecting accuracy and usability.
In spite of a recent surge in the market for pen-based computing devices, many people who generate text still do so with a standard keyboard. To date, pen-based computing has not replaced conventional portable laptop computers, because text input on pen-based computers can be slow, among other reasons. Other devices sacrifice half of the area of the face of the device in order to include a “thumb” keyboard with miniature keys that are difficult to use, time-consuming, and error-prone. At the same time, such an approach means that the area relegated to a physical keyboard can no longer be used to provide a much larger display with correspondingly more efficient and enjoyable access to information. The recent success of the “iPhone” demonstrates that the “all touch-screen” device model has significant advantages in that it can offer a simpler and more intuitive user interface for many of the tasks commonly performed with handheld devices.
Analogous to one-finger typing, one type of input using a virtual keyboard is called “point and tap”. A stylus (or more and more commonly, a finger) is moved from letter to letter and a “tap” is performed by contacting the screen on the desired key to select it. This results in the need to constantly lift the stylus from the screen and set it back down again, significantly slowing input. Cursive handwriting was invented to allow a better (and faster) flow from letter to letter and reduce the number of pen (or quill) lifts. In a similar way, the current invention reduces the number of taps required when inputting using an on-screen keyboard, thus speeding text entry.
Handheld devices are designed to fit comfortably in a pocket, and are consequently limited in size. A virtual keyboard that must be displayed on the device's touch-screen is therefore restricted in size. Depending on the target language to be generated and application being used, it may be desirable to be able to generate a large variety of characters from the keyboard. There are generally three methods to achieve this: (1) Reduce the average size of each key to fit a large number of keys on a small keyboard area; (2) Add (and force the user to navigate to) other keyboard layouts from which alternate characters can be generated; or (3) Overload one or more of the keys on the primary keyboard layout so that multiple characters can be generated from a single key by activating it in different ways.
Method 1 is undesirable because the keys tend to become too small to activate easily or reliably. Method 2 is undesirable because the process of navigating between alternate keyboards is inconvenient and time-consuming. Method 3 may require that the user learn novel ways of activating keys, but once learned, this approach is fast and effective.
One very common way of over-loading a key with alternate functionality is to assign an alternative “tap-hold” behavior to a key, where the “base function” of a key is invoked by a “normal tap” of the key (where the key is contacted and the contact is terminated relatively quickly), and an alternative function is invoked by contacting the key and maintaining the contact past an initial time threshold. This approach can be extended, so that maintaining the contact past a second time threshold results in triggering a second alternative function for the key. Another method to overload a key with alternative functions is to define a set of one or more “gestures” that the user can perform following the initial contact with the key. For example, King et al (U.S. Pat. No. 5,953,541) disclose tapping a key and then moving the point of contact in a particular direction to generate one of an ambiguous set of characters assigned to the key. In another example, Buxton (U.S. Pat. No. 6,094,197) disclose tapping a key and then moving the point of contact to exit from the key in a particular direction to apply a function modifier (such as Shift or Control) to the character assigned to the key.
Another function that has been invoked based on the length of time during which contact with a key is continuously maintained is the automatic repetition of activations of the key. This is most commonly found to be useful in, for example, generating a relatively rapid sequence of a large number of activations of the backspace key to delete a relatively large piece of text. It can also be used to generate a large number of repetitions of a single character, such as simulating a horizontal line with a large number of hyphen characters. This has generally been done by providing for an initial time threshold past which contact must continue before the first repeated activation of the contacted key is generated. Additional activations are then generated at regular intervals as long as the contact with the key is continued. In some implementations, these regular intervals also become shorter over time so that additional repetitions occur more rapidly.
There are two problems with automatic key repetition based on the length of time during which contact with a key is continuously maintained. One is that these repetitions tend to be either slower than desired when a large number of repetitions is required, or conversely, faster than desired in order to accurately generate exactly the required number of repetitions (so that either too few—or worse, in the case of a repeated backspace, too many—repetitions are generated). The second problem is that this approach is not compatible with using time-based activation to generate alternate overloaded function definitions for a keyboard.